<?php

//class Up{
//	//创建变量，保存资源
//	private $error;
////	提供个外部上传
//  public function up(){
//  	//1.重组数组
//		$arr = $this->resetArr();
//		//2.循环数组，如果有不符合规则的不允许上传
//		foreach ($arr as $v) {
//		//3.筛选
//			if(!$this->filter($v)){
//				return false;
//			}
//		}
//		//4.遍历上传
//		foreach($arr as $v){
//			$this->move($v);
//		}
//		return true;
//  }
// 
//	
//	//重组数组
//	private function resetArr(){
//		$arr = array();
//		
//		foreach ($_FILES as $v) {
//			//多文件上传
//			if(is_array($v['name'])){
//				foreach ($v['name'] as $key => $value) {
//					$arr[] = array(
//						'name' => $value,
//						'type' => $v['type'][$key],
//						'tmp_name' => $v['tmp_name'][$key],
//						'error' => $v['error'][$key],
//						'size' => $v['size'][$key],
//					);
//				}
//			}else{//单文件上传
//			
//				$arr[] = $v;
//			}
//		}
//		//返回数组
//		return $arr;
//
//	}
//	
//	
////	筛选
//  private function filter($v) {
////  	先获得数据类型，以便筛选和上传类型
//      $type = ltrim(strrchr($v['name'], '.'),'.');
//  	switch (true) {
//  		
//			//不是一个合法的上传文件
//			//is_uploaded_file用于检测上传文件，判断其是否合法
//			case !is_uploaded_file($v['tmp_name']):
//				$this->error = '不是一个合法的上传文件';
//				return false;
//			
//			//文件类型不允许
////			in_array用于数组匹配
//			case !in_array($type, array('jpg','png','gif')):
//				$this->error = '文件类型不允许';
//				return false;
//				
//			//文件超过网站配置大小
//			case $v['size'] > 2000000:
//				$this->error = '文件超过网站配置大小';
//				return false;
//				
//			//文件没有上传
//			
//			case $v['error'] == 4:
//				$this->error = '没有文件上传';
//				return false;
//				
//         //文件只有部分上传
//         case $v['error'] == 3:
//				$this->error = '文件只有部分上传';
//				return false;
//				
//			//文件大小超过HTML表单中MAX_FILE_SIZE选项指定值	
//			case $v['error'] == 2:
//				$this->error = '文件大小超过HTML表单中MAX_FILE_SIZE选项指定值，无法上传';
//				return false;
//			
//			//文件大小超过了php.ini中upload_max_filesize限制值
//			case $v['error'] == 1:
//				$this->error = '文件大小超过了php.ini中upload_max_filesize限制值';
//				return false;			
//		    //返回true
//  		default:
//  			
//  			return true;
//  	}
//  }
//	 
//	
//	//移动上传
//	private function move($v){
//		$path = './upload';
//		$path = rtrim($path, '/');
//		is_dir($path) || mkdir($path, 0777, true);
//		$type = ltrim(strrchr($v['name'], '.'),'.');
//		$fullPath = $path . '/' . time() . mt_rand(0, 99999) . '.' . $type;
//		//移动上传
//		move_uploaded_file($v['tmp_name'], $fullPath);
//	
//	}
//	
//	
//}
//
//
//
//
//
//
//
//
//
//
//
//
//class Up{
//	//创建变量，保存资源
//	private $error;
////	提供个外部上传
//  public function up(){
//  	//1.重组数组
//		$arr = $this->resetArr();
//		//2.循环数组，如果有不符合规则的不允许上传
//		foreach ($arr as $v) {
//		//3.筛选
//			if(!$this->filter($v)){
//				return false;
//			}
//		}
//		//4.遍历上传
//		foreach($arr as $v){
//			$this->move($v);
//		}
//		return true;
//  }
// 
//	
//	//重组数组
//	private function resetArr(){
//		$arr = array();
//		
//		foreach ($_FILES as $v) {
//			//多文件上传
//			if(is_array($v['name'])){
//				foreach ($v['name'] as $key => $value) {
//					$arr[] = array(
//						'name' => $value,
//						'type' => $v['type'][$key],
//						'tmp_name' => $v['tmp_name'][$key],
//						'error' => $v['error'][$key],
//						'size' => $v['size'][$key],
//					);
//				}
//			}else{//单文件上传
//			
//				$arr[] = $v;
//			}
//		}
//		//返回数组
//		return $arr;
//
//	}
//	
//	
////	筛选
//  private function filter($v) {
////  	先获得数据类型，以便筛选和上传类型
//      $type = ltrim(strrchr($v['name'], '.'),'.');
//  	switch (true) {
//  		
//			//不是一个合法的上传文件
//			//is_uploaded_file用于检测上传文件，判断其是否合法
//			case !is_uploaded_file($v['tmp_name']):
//				$this->error = '不是一个合法的上传文件';
//				return false;
//			
//			//文件类型不允许
////			in_array用于数组匹配
//			case !in_array($type, array('jpg','png','gif')):
//				$this->error = '文件类型不允许';
//				return false;
//				
//			//文件超过网站配置大小
//			case $v['size'] > 2000000:
//				$this->error = '文件超过网站配置大小';
//				return false;
//				
//			//文件没有上传
//			
//			case $v['error'] == 4:
//				$this->error = '没有文件上传';
//				return false;
//				
//         //文件只有部分上传
//         case $v['error'] == 3:
//				$this->error = '文件只有部分上传';
//				return false;
//				
//			//文件大小超过HTML表单中MAX_FILE_SIZE选项指定值	
//			case $v['error'] == 2:
//				$this->error = '文件大小超过HTML表单中MAX_FILE_SIZE选项指定值，无法上传';
//				return false;
//			
//			//文件大小超过了php.ini中upload_max_filesize限制值
//			case $v['error'] == 1:
//				$this->error = '文件大小超过了php.ini中upload_max_filesize限制值';
//				return false;			
//		    //返回true
//  		default:
//  			
//  			return true;
//  	}
//  }
//	 
//	
//	//移动上传
//	private function move($v){
//		$path = './upload';
//		$path = rtrim($path, '/');
//		is_dir($path) || mkdir($path, 0777, true);
//		$type = ltrim(strrchr($v['name'], '.'),'.');
//		$fullPath = $path . '/' . time() . mt_rand(0, 99999) . '.' . $type;
//		//移动上传
//		move_uploaded_file($v['tmp_name'], $fullPath);
//	
//	}
//	
//	
//}




















class Up{
	//创建变量，保存资源
	private $error;
//	提供个外部上传
    public function up(){
    	//1.重组数组
		$arr = $this->resetArr();
		//2.循环数组，如果有不符合规则的不允许上传
		foreach ($arr as $v) {
		//3.筛选
			if(!$this->filter($v)){
				return false;
			}
		}
		//4.遍历上传
		foreach($arr as $v){
			$this->move($v);
		}
		return true;
    }
 
	
	//重组数组
	private function resetArr(){
		$arr = array();
		
		foreach ($_FILES as $v) {
			//多文件上传
			if(is_array($v['name'])){
				foreach ($v['name'] as $key => $value) {
					$arr[] = array(
						'name' => $value,
						'type' => $v['type'][$key],
						'tmp_name' => $v['tmp_name'][$key],
						'error' => $v['error'][$key],
						'size' => $v['size'][$key],
					);
				}
			}else{//单文件上传
			
				$arr[] = $v;
			}
		}
		//返回数组
		return $arr;

	}
	
	
//	筛选
    private function filter($v) {
//  	先获得数据类型，以便筛选和上传类型
        $type = ltrim(strrchr($v['name'], '.'),'.');
    	switch (true) {
    		
			//不是一个合法的上传文件
			//is_uploaded_file用于检测上传文件，判断其是否合法
			case !is_uploaded_file($v['tmp_name']):
				$this->error = '不是一个合法的上传文件';
				return false;
			
			//文件类型不允许
//			in_array用于数组匹配
			case !in_array($type, array('jpg','png','gif')):
				$this->error = '文件类型不允许';
				return false;
				
			//文件超过网站配置大小
			case $v['size'] > 2000000:
				$this->error = '文件超过网站配置大小';
				return false;
				
			//文件没有上传
			
			case $v['error'] == 4:
				$this->error = '没有文件上传';
				return false;
				
           //文件只有部分上传
           case $v['error'] == 3:
				$this->error = '文件只有部分上传';
				return false;
				
			//文件大小超过HTML表单中MAX_FILE_SIZE选项指定值	
			case $v['error'] == 2:
				$this->error = '文件大小超过HTML表单中MAX_FILE_SIZE选项指定值，无法上传';
				return false;
			
			//文件大小超过了php.ini中upload_max_filesize限制值
			case $v['error'] == 1:
				$this->error = '文件大小超过了php.ini中upload_max_filesize限制值';
				return false;			
		    //返回true
    		default:
    			
    			return true;
    	}
    }
	 
	
	//移动上传
	private function move($v){
		$path = './upload';
		//去掉右边 的斜杠
		$path = rtrim($path, '/');
		is_dir($path) || mkdir($path, 0777, true);
		$type = ltrim(strrchr($v['name'], '.'),'.');
		//组合路径
		$fullPath = $path . '/' . time() . mt_rand(0, 99999) . '.' . $type;
		//移动上传
		move_uploaded_file($v['tmp_name'], $fullPath);
	
	}
	
	
}















?>